# 多人协作编辑

多人协作编辑功能允许多个用户同时编辑同一个文档，并且文档内容是实时传输到服务器端的，可以在服务器端直接入库，无需再由客户端发起保存请求。

多人协作编辑需要服务器端软件[Umo Editor Server](../server)的支持，当然您也可以自定义服务商。

## 效果截图

![多人协作编辑](/demos/collaboration-cn.png)

## 特点及优势

- 支持私有化部署，您可以私有化部署或者自定义服务商，实现数据的安全性和可控性；
- 实时离线和在线协作，支持实时离线和在线协作，当用户离线后再次连接时，仍然可以同步文档更改的内容；
- 通过 WebSocket 与服务器进行实时通信，实现文档内容的实时同步；
- 可通过 Webhook 与其他应用进行通信，实现文档内容及评论等信息的同步；
- 支持文档评论协作，用户可以对文档进行评论，评论内容也会实时同步到服务器端；
- Umo Editor Server 可支持 100000+ 用户同时在线编辑，实现高效的多人协作，支持集群部署。

## 默认配置

``` js
const defaultOptions = {
  // 多人协作编辑相关配置
  collaboration: {
    enabled: false,
    provider: {},
  },
}
```

## 不支持的配置

当开启了在线协作功能时，不支持以下配置：

``` js
const defaultOptions = {
  document: {
    content:'',
    autoSave: {
      // ...
    },
  },
  onSave(){
    // ...
  }
}
```

因为在多人协作的场景中，文档内容是实时传输到服务器端的，可以在服务器端直接入库，无需再由客户端发起保存请求。

## 配置说明

### collaboration

多人协作编辑的相关配置，其实现思路和原理可以参考：https://tiptap.dev/docs/hocuspocus 。

- `collaboration.enabled`

**说明**：是否启用在线协作。

**类型**：Boolean

- `collaboration.provider`

**说明**：在线协作服务商配置。Umo Editor Next 默认提供了基于 [Express](https://expressjs.com/?hl=zh-CN) 一个 Nodejs 的服务器端（见：[Umo Editor Server](../server)），包含了 Hocuspocus Server，该选项支持 Hocuspocus Server 的所有配置。

**类型**：Object

**配置**：同 Hocuspocus Server 的配置，见 https://tiptap.dev/docs/hocuspocus/provider/configuration 。

## 方法列表

方法的使用示例请参考：[方法列表](../methods)。

### getCollaboration

**说明**：获取在线协作相关信息。

**参数**：无

**返回值**：Object 或 undefined，Object 包含以下信息：
- `connect`：Boolean，是否与服务商连接成功；
- `user`：Array，当前文档协作用户列表；
- `provider`：Object，服务商信息，获得服务商信息后，可以通过监听相关事件，来实现更多个性化需求，参考：https://tiptap.dev/docs/hocuspocus/provider/events#option-2-binding 。
